/**
 * 
 */
package mm.back.dao;

import java.util.List;

import mm.back.entity.Rubro;
import mm.back.filtros.RubrosFiltro;
import mm.exceptions.MMGenericException;

/**
 * @author PUSDERKIS
 *
 */
public interface RubroDAO {
	
	/**
	 * Crea un rubro en base a la descripción.
	 * @param nombre el nombre del rubro
	 * @throws MMGenericException en caso de error.
	 */
	Rubro createRubro(String nombre) throws MMGenericException;
	
	/**
	 * Busca si existe el rubro.
	 * @param nombre el nombre del rubro
	 * @throws MMGenericException en caso de error.
	 */
	Rubro searchRubro(String nombre) throws MMGenericException;
	/**
	 * 
	 * @param filtro el filtro para los rubros.
	 * @return la lista de rubros que coinciden con los criterios de busqueda.
	 * @throws MMGenericException en caso de error.
	 */
	List<Rubro> findRubros(RubrosFiltro filtro) throws MMGenericException;
	
	/**
	 * Recupera un rubro en base al ID.
	 * @param id el id del rubro.
	 * @return el rubro.
	 * @throws MMGenericException en caso de error.
	 */
	Rubro getRubro(Long id) throws MMGenericException;
	
	Rubro saveRubro(Rubro rubro) throws MMGenericException;
	
	//TODO MAXI: hacer un saveRubro que guarde el rubro en la base de datos.
	
	List<Rubro> filtrarNombre(String nombre) throws MMGenericException;
	

}
